package demo4.controller;

import demo4.mapper.IUserMapper;
import demo4.mapper.Usermapper;
import demo4.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Scanner;

/**
 * Controller 控制器
 * 这个层级的类负责和用户打交道，并将请求将来交给业务层处理，并提交处理结果
 * 反馈给用户
 */
@Component
public class UserController {
    @Autowired
    private IUserMapper iuserMapper;

    public void start(){
        //System.out.println("UserController:开始处理用户请求");
        //System.out.println("UserController:开始处理注册");
        //System.out.println("UserController:获取用户输入信息...");
        //iuserMapper.insert(null);//将数据插入表中
        //System.out.println("UserController:注册成功");//根据持久层对数据库操作结果进行反馈给用户

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入编号：");
        System.out.println("1:用户注册");
        System.out.println("2:用户登录");
        System.out.println("3:用户列表");
        System.out.println("4:修改用户信息");
        int num = scanner.nextInt();
        switch (num){
            case 1:
                userReg();
                break;
            case 2:
                userLogin();
                break;
            case 3:
                userList();
                break;
            case 4:
                userUpdate();
                break;
            default:
                System.out.println("输入错误");
        }

    }

    // 处理用户注册
    private void userReg(){
        System.out.println("欢迎注册");
        User user = new User();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名：");
        user.setUsername(scanner.next());
        System.out.println("请输入密码：");
        user.setPassword(scanner.next());
        System.out.println("请输入昵称：");
        user.setNickname(scanner.next());
        System.out.println("请输入年龄：");
        user.setAge(scanner.nextInt());
        System.out.println(user);
        //获取信息后进行验证（有没有空这个，有没有非法字符）,用户名是否重复

        if(iuserMapper.selectByUsername(user.getUsername())==null){
            //验证通过，将该用户插入到数据库中
            int result = iuserMapper.insert(user);
            System.out.println(result>0?"注册成功":"注册失败");
        }else{
            System.out.println("该用户【"+user.getUsername()+"】已存在");
        }
    }

    // 处理用户登录
    private void userLogin(){
        System.out.println("用户登录");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名：");
        String username = scanner.next();
        System.out.println("请输入密码：");
        String password = scanner.next();

        //获取信息后进行验证（有没有空这个，有没有非法字符）,用户名是否重复

        //登录验证
        User user = iuserMapper.selectByUsername(username);
        if(user!=null){
            if (user.getPassword()==password){
                System.out.println("登录成功，欢迎【"+user.getNickname()+"】回来!");
            }else{
                System.out.println("登录失败，密码错误！");
            }
        }else {
            System.out.println("登录失败，用户不存在！");
        }
    }

    //列出所有用户
    private void userList(){
        System.out.println("展示用户列表");
        for (User user:iuserMapper.selectAll()) {
            System.out.println(user);
        }
    }

    //修改密码
    private void userUpdate(){
        //1:要求用户输入用户名，新的密码，昵称，年龄
        //2:将该信息以User对象形式保存
        //3:调用userMapper的update方法
        //4:处理结果并反馈给用户
        System.out.println("修改用户信息");
        Scanner scanner = new Scanner(System.in);
        User user = new User();
        System.out.println("请输入用户名：");
        user.setUsername(scanner.next());
        System.out.println("请输入新的密码：");
        user.setPassword(scanner.next());
        System.out.println("请输入新的昵称：");
        user.setNickname(scanner.next());
        System.out.println("请输入新的年龄：");
        user.setAge(scanner.nextInt());
        System.out.println(user);
        int result = iuserMapper.update(user);
        System.out.println(result>0?"修改成功":"修改失败");
    }
}
